package thread;

import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicReference;

public class AtomicReferenceDemo2 {
    static AtomicReference<Integer> atomicReference = new AtomicReference<>(100);
    public static void main(String[] args) {
        System.out.println("========ABA问题的产生=========");
        new Thread(() -> {
            //CAS 主内存中的原始值100和期望值100比较相等,返回值为true且将主内存中的原始值修改为111;
            atomicReference.compareAndSet(100, 111);
            //CAS 主内存中的原始值111和期望值111比较相等,返回值为true且将主内存中的原始值修改为100;
            atomicReference.compareAndSet(111, 100);

        }, "t1").start();

        new Thread(() -> {
            //CAS
            System.out.println(atomicReference.compareAndSet(100, 2020) + "\t" + atomicReference.get());
        }, "t2").start();
    }
}
